/*
	循环的种类：
	（1）while
	（2）for
		基本for循环
		for of 循环遍历可迭代对象的值
		for in 循环遍历对象的属性和数组的属性
	（3）do...while


	循环重要的四要素
	1.循环变量------- 控制循环执行几次
	2.循环条件------- 控制循环的开始和结束
	3.循环语句------- 控制循环的内容 （一定要想清楚不变的是什么）（语文）
	4.循环变脸的迭代------ 控制循环变量的增长

	循环的使用只是场景的不同，都可以互换
*/



// for循环（最常用）
/*
		基本语法：
			for (语句 1; 语句 2; 语句 3) {
     			要执行的代码块
			}
		语句解释：
			语句 1 在循环（代码块）开始之前执行。
			语句 2 定义运行循环（代码块）的条件。
			语句 3 会在循环（代码块）每次被执行后执行。
*/

// 代码的执行逻辑
for (let i = 1; i < 5; i++) {
	console.log(i);
}
console.log("----------------------------");
// 语句一说明：
// （1）语句一是可选,必须要保证语法完成 分号不能少
// （2）语句一可以定义多个变量

let k = 1
for (; k < 5; k++) {
	console.log(k);
}

console.log("----------------------------");


for (let i = 1, j = 1; i < 5 && j < 2; i++, j++) {
	console.log(i, j);
}

console.log("----------------------------");

// 语句二说明：
// （1）可选的 如果省略，那么循环将不会结束，需要结合break来进行循环的结束

// for (let i = 1; ; i++) {
// 	console.log(i);
// }

// 语句三说明：
// （1）可选的 如果省略就没有了循环变量的叠加
// for (let i = 1; ; ) {
// 	console.log(i);
// }

// 总结：
// （1）for循环三个参数都可选，都不写就是一个无限循环（死循环）


// for of

let str = "abc";

// s：临时定义的一个变量
for (s of str) {
	console.log(s);
}





// 代码调试（重要！！！！！必须会！！！）
/*
	使用步骤：
	（1）打开浏览器进入到调试器页面
	（2）打开对应的文件
	（3）打断点-观察到在浏览器的行数显示中做了标记
	（4）运行代码-调试器会暂停，停到我们第一个打断点的位置
	（5）四个按键的作用（按照顺序写的）
		快速进入到下一个断点
		执行下一条语句
		跳入：查看函数内部的执行逻辑
		跳出：跳出当前的函数
	（6）鼠标悬停时，可以观察到变量的值
*/

// while循环
/*
	while (条件) {
    	要执行的代码块
	}


*/
let i = 1;
while (i < 5) {
	console.log(i);
	i++;
}
console.log("----------------------------");

// do...while
/*
	特点：先执行一次循环语句，在进行判断
	do {
    	要执行的代码块
	}
	while (条件);

*/

let j = 1;
do {
	console.log(j);
	j++;
} while (j < 5);

// 总结：相同条件下 dowhile会比while少判断一次
// while的无限循环写法为 while (true) 常用的无限循环写法




// 补充：for循环嵌套
// 我们一般最多就写两层循环
for (let i = 1; i < 5; i++) {
	for (let j = 1; j < 5; j++) {
		console.log("i =", i, "j =", j);
	}
}


// for: 常用的循环 （有限循环 知道循环次数） while：无限循环 （不知道循环几次的时候）


// 技巧：内层循环控制列，外层控制行

/*
	循环的使用步骤：
	1.在描述的语句中，能分析出哪里用到了循环？
	2.确定循化种类？
	3.循环的四要素？


*/



















